package satk.beans.usuario;

import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import satk.beans.interfaces.IntControlBeansAdd;
import satk.objetos.Usuario;

/**
 * <h3>AddUsuarioBeans.java</h3>
 * <div><em>Fecha de creación: 29/05/2011, 12:13:21 PM.</em></div>
 * <p></p>
 * @author Sergio Flores Genis <sf.cancun@gmail.com>
 */
@ManagedBean
@RequestScoped
public class AddUsuarioBeans
        implements IntControlBeansAdd, Serializable {

    private Usuario usuario = null;

    public AddUsuarioBeans() {
        this.usuario = new Usuario();
    }

    @Override
    public Usuario getNews() {
        return usuario;
    }
    
    @Override
    public String add() {
        List<Throwable> lError = usuario.valida();
        if(!lError.isEmpty()){
            String summary = satk.tools.GeneralEx.excepcionListThrowable(lError);
            throw  new javax.faces.validator.ValidatorException(new FacesMessage(summary));
        }
        try {
            new satk.database.ManagerUsuarios().add(usuario);
            this.usuario = new Usuario();
        } catch (java.sql.SQLIntegrityConstraintViolationException ex) {
            Logger.getLogger(AddUsuarioBeans.class.getName()).log(Level.SEVERE,
                    "Usuario con el mismo nombre", ex);
            throw new javax.faces.event.AbortProcessingException(
                    "Ya existe un usuario con este nombre");
        } catch (java.sql.SQLException ex) {
            Logger.getLogger(AddUsuarioBeans.class.getName()).log(Level.SEVERE,
                    "Error al registrar usuario", ex);
            throw new javax.faces.event.AbortProcessingException(ex.getErrorCode() + ex.getMessage());
        }
        return null;
    }
}
